﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using _1.Presentacion.Utilidades;
using _2.Logica.Miembro;
using _1.Presentacion.Principal;

namespace _1.Presentacion.Modulo_Miembros
{
    public partial class Informacion_Miembro : Päntalla_Base
    {
        public Informacion_Miembro()
        {
            InitializeComponent();
        }


     private void P_Limpiar()
     {
      
         txtPKMiembroIgnore.Text = "0";
         txtMimNombre.Clear();
         txtMiemPrimerApellido.Clear();
         txtMiemSegundoApellido.Clear();
         txtMiemDireccion.Clear();
         txtMiemCorreoIgnore.Clear();
         chbMiemEstado.Checked = false;
         chbTieneHijos.Checked = false;
         nupMiemCantHijos.Value = 0;
         chEscuelaAguilas.Checked = false;
         chbLecheEspiritual.Checked = false;
         rbHombre.Checked = true;
         mskMiemTelefonoIgnore.Clear();
         nupMiemCantHijos.Enabled = false;
         dtpMiemNacimiento.Value = System.DateTime.Today;
         txtBuscaCodIgnore.Text = "0";
         txtBuscaNombreIgnore.Text = "";
   
        

     }
     
          

        private void P_Buscar()
     {
         var obj = new _4.Modelado.Miembros.Miembro();
         obj.sNombre = txtBuscaNombreIgnore.Text;
         obj.iCodigo = Convert.ToInt32(txtBuscaCodIgnore.Text);
         CargaGridMiembrosBusqueda(obj);
     }

#region Cargar datos
        
        public void CargaGridMiembros()
        {
            try
            {
                var logica = new MiembroL();

                List<_4.Modelado.Miembros.Miembro> listaMiembros = logica.ConsultarMiembros();
                dgvMiembros.Rows.Clear();
                for (int i = 0; i < listaMiembros.Count; i++)
                {
                  
                    dgvMiembros.Rows.Add();
                    dgvMiembros.Rows[i].Cells[0].Value = listaMiembros[i].iPKMiembro;
                    dgvMiembros.Rows[i].Cells[1].Value = listaMiembros[i].sMiemNombre;
                    dgvMiembros.Rows[i].Cells[2].Value = listaMiembros[i].sMiemDireccion;
                    dgvMiembros.Rows[i].Cells[3].Value = listaMiembros[i].snombreCompleto;
                    dgvMiembros.Rows[i].Cells[4].Value = listaMiembros[i].sMiemCorreo;
                    dgvMiembros.Rows[i].Cells[5].Value = listaMiembros[i].dMiemNacimiento;
                    dgvMiembros.Rows[i].Cells[6].Value = listaMiembros[i].iFKEstadoCivil;
                    dgvMiembros.Rows[i].Cells[7].Value = listaMiembros[i].bMiemLecheEspiritual;
                    dgvMiembros.Rows[i].Cells[8].Value = listaMiembros[i].bMiemEscuelaAguila;
                    dgvMiembros.Rows[i].Cells[9].Value = listaMiembros[i].bMiemTieneHijos;
                    dgvMiembros.Rows[i].Cells[10].Value = listaMiembros[i].iMiemCantHijos;
                    dgvMiembros.Rows[i].Cells[11].Value = listaMiembros[i].sMiemTelefono;
                    dgvMiembros.Rows[i].Cells[12].Value = listaMiembros[i].bMiemEstado;
                    dgvMiembros.Rows[i].Cells[13].Value = listaMiembros[i].cMiemSexo;
                    dgvMiembros.Rows[i].Cells[14].Value = listaMiembros[i].sMiemPrimerApellido;
                    dgvMiembros.Rows[i].Cells[15].Value = listaMiembros[i].sMiemSegundoApellido;
                    dgvMiembros.Rows[i].Cells[16].Value = listaMiembros[i].sMiemEstadoCivil;
                }

            }
            catch (Exception exc)
            {

                MessageBox.Show("Eror al cargar la lista de Miembros " + exc, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        public void CargaGridMiembrosBusqueda(_4.Modelado.Miembros.Miembro obj)
         {
             try
             {
                 var logica = new MiembroL();

                 List<_4.Modelado.Miembros.Miembro> listaMiembros = logica.ConsultarMiembro(obj);
                 dgvMiembros.Rows.Clear();
                 for (int i = 0; i < listaMiembros.Count; i++)
                 {

                     dgvMiembros.Rows.Add();
                     dgvMiembros.Rows[i].Cells[0].Value = listaMiembros[i].iPKMiembro;
                     dgvMiembros.Rows[i].Cells[1].Value = listaMiembros[i].sMiemNombre;
                     dgvMiembros.Rows[i].Cells[2].Value = listaMiembros[i].sMiemDireccion;
                     dgvMiembros.Rows[i].Cells[3].Value = listaMiembros[i].snombreCompleto;
                     dgvMiembros.Rows[i].Cells[4].Value = listaMiembros[i].sMiemCorreo;
                     dgvMiembros.Rows[i].Cells[5].Value = listaMiembros[i].dMiemNacimiento;
                     dgvMiembros.Rows[i].Cells[6].Value = listaMiembros[i].iFKEstadoCivil;
                     dgvMiembros.Rows[i].Cells[7].Value = listaMiembros[i].bMiemLecheEspiritual;
                     dgvMiembros.Rows[i].Cells[8].Value = listaMiembros[i].bMiemEscuelaAguila;
                     dgvMiembros.Rows[i].Cells[9].Value = listaMiembros[i].bMiemTieneHijos;
                     dgvMiembros.Rows[i].Cells[10].Value = listaMiembros[i].iMiemCantHijos;
                     dgvMiembros.Rows[i].Cells[11].Value = listaMiembros[i].sMiemTelefono;
                     dgvMiembros.Rows[i].Cells[12].Value = listaMiembros[i].bMiemEstado;
                     dgvMiembros.Rows[i].Cells[13].Value = listaMiembros[i].cMiemSexo;
                     dgvMiembros.Rows[i].Cells[14].Value = listaMiembros[i].sMiemPrimerApellido;
                     dgvMiembros.Rows[i].Cells[15].Value = listaMiembros[i].sMiemSegundoApellido;
                     dgvMiembros.Rows[i].Cells[16].Value = listaMiembros[i].sMiemEstadoCivil;
                 }

             }
             catch (Exception exc)
             {

                 MessageBox.Show("Eror al cargar la lista de Miembros " + exc, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
             }
         }
       
        public void CargaComboEstadoCivil()
        {
            try
            {
                var logica = new MiembroL();
                CbMiemEstadoCivil.DataSource = logica.LlenarComboEstadoCivil();
                CbMiemEstadoCivil.ValueMember = "PK_Estado_Civil";
                CbMiemEstadoCivil.DisplayMember = "EstadoCivilDespcripcion";
               


            }
            catch (Exception exc)
            {

                MessageBox.Show(" No se pudo cargar el combo de estado civil" + exc.Message, "Error", MessageBoxButtons.OK);
            }


        }
        public void CargaComboEstadoCivilMiembro(int codigo)
        {
            try
            {
                var logica = new MiembroL();
                CbMiemEstadoCivil.DataSource = logica.LlenarComboEstadoCivil();
                CbMiemEstadoCivil.ValueMember = "PK_Estado_Civil";
                CbMiemEstadoCivil.DisplayMember = "EstadoCivilDespcripcion";
                CbMiemEstadoCivil.SelectedValue = codigo;

            }
            catch (Exception exc)
            {

                MessageBox.Show(" No se pudo cargar el combo de estado civil" + exc.Message, "Error", MessageBoxButtons.OK);
            }


        }


#endregion


        private void Informacion_Miembro_Load(object sender, EventArgs e)
        {
           // P_Limpiar_Busqueda();
            CargaGridMiembros();
            P_Limpiar();
            CargaComboEstadoCivil();
            
       }

     

        private void btnModificarFamilia_Click(object sender, EventArgs e)
        {
           
            try
            { 

                int cantErrores = 0;

                Validaciones.Validar(this, errorProvider1, ref cantErrores);

                if (cantErrores == 0)
                {
                    #region Guardar Miembro

                    var obj = new _4.Modelado.Miembros.Miembro();
                    obj.iPKMiembro = Convert.ToInt32(txtPKMiembroIgnore.Text);
                    obj.sMiemNombre = txtMimNombre.Text;
                    obj.sMiemPrimerApellido = txtMiemPrimerApellido.Text;
                    obj.sMiemSegundoApellido = txtMiemSegundoApellido.Text;
                    obj.sMiemDireccion = txtMiemDireccion.Text;
                    obj.sMiemCorreo = txtMiemCorreoIgnore.Text;
                    obj.dMiemNacimiento = dtpMiemNacimiento.Value;
                    obj.bMiemLecheEspiritual = chbLecheEspiritual.Checked;
                    obj.bMiemEscuelaAguila = chEscuelaAguilas.Checked;
                    obj.bMiemTieneHijos = chbTieneHijos.Checked;
                    obj.iMiemCantHijos = Convert.ToInt32(nupMiemCantHijos.Value);
                    obj.sMiemTelefono = mskMiemTelefonoIgnore.Text;
                    obj.bMiemEstado = chbMiemEstado.Checked;
                    obj.iFKEstadoCivil = Convert.ToInt32(CbMiemEstadoCivil.SelectedValue);

                    if (rbHombre.Checked )
                        obj.cMiemSexo = 'H';
                    else
                    {
                        obj.cMiemSexo = 'M';
                    }

                    var logica = new MiembroL();
                    logica.GuardarMiembro(obj);
                    CargaGridMiembros();
                    P_Limpiar();

                }
                // MessageBox.Show("Las contraseñas deben coincidir", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); 

                #endregion

                }
            catch (Exception)
            {

                MessageBox.Show("Se produjo un error al guardar los datos", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
            }
        }

       
        #region Cambia label a checkboxes segun su estado
        private void chbMiemEstado_CheckedChanged(object sender, EventArgs e)
        {
            if (chbMiemEstado.Checked == true)
                chbMiemEstado.Text = "Activo";
            else
            {
                chbMiemEstado.Text = "Inactivo";
            }
        }

        private void chbTieneHijos_CheckedChanged(object sender, EventArgs e)
        {
            if (chbTieneHijos.Checked == true)
            {
                chbTieneHijos.Text = "Sí";
                nupMiemCantHijos.Enabled = true;
            }
            else
            {
                chbTieneHijos.Text = "No";
                nupMiemCantHijos.Enabled = false;
                nupMiemCantHijos.Value = 0;
            }
        }

        private void chEscuelaAguilas_CheckedChanged(object sender, EventArgs e)
        {
            if (chEscuelaAguilas.Checked == true)
                chEscuelaAguilas.Text = "Sí";
            else
            {
                chEscuelaAguilas.Text = "No";
            }

        }

        private void chbLecheEspiritual_CheckedChanged(object sender, EventArgs e)
        {
            if (chbLecheEspiritual.Checked == true)
                chbLecheEspiritual.Text = "Sí";
            else
            {
                chbLecheEspiritual.Text = "No";
            }

        }
        #endregion
     

        private void dgvMiembros_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                int indicefila = dgvMiembros.SelectedCells[0].RowIndex;
                txtPKMiembroIgnore.Text = dgvMiembros.Rows[indicefila].Cells[0].Value.ToString();
                txtMimNombre.Text = dgvMiembros.Rows[indicefila].Cells[1].Value.ToString();
                txtMiemPrimerApellido.Text = dgvMiembros.Rows[indicefila].Cells[14].Value.ToString();
                txtMiemSegundoApellido.Text = dgvMiembros.Rows[indicefila].Cells[15].Value.ToString();
                txtMiemDireccion.Text = dgvMiembros.Rows[indicefila].Cells[2].Value.ToString();
                txtMiemCorreoIgnore.Text = dgvMiembros.Rows[indicefila].Cells[4].Value.ToString();
                dtpMiemNacimiento.Value = Convert.ToDateTime(dgvMiembros.Rows[indicefila].Cells[5].Value.ToString());
                chbLecheEspiritual.Checked = Convert.ToBoolean(dgvMiembros.Rows[indicefila].Cells[7].Value.ToString());
                chEscuelaAguilas.Checked = Convert.ToBoolean(dgvMiembros.Rows[indicefila].Cells[8].Value.ToString());
                chbTieneHijos.Checked = Convert.ToBoolean(dgvMiembros.Rows[indicefila].Cells[9].Value.ToString());
                nupMiemCantHijos.Value = Convert.ToInt32(dgvMiembros.Rows[indicefila].Cells[10].Value.ToString());
                mskMiemTelefonoIgnore.Text = dgvMiembros.Rows[indicefila].Cells[11].Value.ToString();
                chbMiemEstado.Checked = Convert.ToBoolean(dgvMiembros.Rows[indicefila].Cells[12].Value.ToString());
                if (Convert.ToChar(dgvMiembros.Rows[indicefila].Cells[13].Value.ToString()) == 'H')
                {
                    rbHombre.Checked = true;
                }
                else if (Convert.ToChar(dgvMiembros.Rows[indicefila].Cells[13].Value.ToString()) == 'M')
                {
                    rbMujer.Checked = true;
                }
                CargaComboEstadoCivilMiembro(Convert.ToInt32(dgvMiembros.Rows[indicefila].Cells[6].Value));
            }

            catch (Exception)
            {

                MessageBox.Show("Se produjo un error al cargar los datos", "Error", MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
            }




        }

      

        private void txtBuscaCodIgnore_KeyPress(object sender, KeyPressEventArgs e)
        {
            //Permitimos solo números y  el símbolo .
            if (!char.IsDigit(e.KeyChar) )
            {
                 e.Handled = true;
                
            }
        }

      

        private void txtBuscaCodIgnore_TextChanged(object sender, EventArgs e)
        {
            P_Buscar();

        }

        private void txtBuscaNombreIgnore_TextChanged(object sender, EventArgs e)
        {
            txtBuscaCodIgnore.Text = "0";
            P_Buscar();
        }

        private void btnHom_Click(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Minimized;
        }

        private void btnNuevo_Click(object sender, EventArgs e)
        {
            P_Limpiar();
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            try
            {
                if (dgvMiembros.RowCount > 0)
                {
                    int indiceFila = dgvMiembros.SelectedCells[0].RowIndex;



                    #region Elimina Miembro

                    DialogResult r = MessageBox.Show("Desea eliminar el registro: " + dgvMiembros[3, indiceFila].Value.ToString(), "Validaciones",
                                                     MessageBoxButtons.OKCancel, MessageBoxIcon.Question);

                    if (r == DialogResult.OK)
                    {
                        var obj = new _4.Modelado.Miembros.Miembro();
                        obj.iPKMiembro = Convert.ToInt32(dgvMiembros.Rows[indiceFila].Cells[0].Value);

                        var logica = new MiembroL();
                        logica.EliminarMiembro(obj);
                        MessageBox.Show("El registro fue eliminado exitosamente", "Información", MessageBoxButtons.OK,
                                MessageBoxIcon.Information);
                        CargaGridMiembros();
                        P_Limpiar();


                    }

                    #endregion
                }
            }
            catch (Exception exc)
            {

                MessageBox.Show("No se pudo eliminar el registro " + exc, "Error", MessageBoxButtons.OKCancel);
            }
        }
    }
}
